const { Model, DataTypes } = require("sequelize")

class Message extends Model {
  static init(sequelize) {
    super.init(
      {
        id: {
          type: DataTypes.INTEGER,
          primaryKey: true,
          autoIncrement: true,
        },
        title: {
          type: DataTypes.STRING(100),
          allowNull: false,
        },
        content: {
          type: DataTypes.TEXT,
          allowNull: false,
        },
        sendId: {
          type: DataTypes.INTEGER,
          allowNull: false,
          references: {
            model: "Users", // 关联的表名
            key: "id", // 关联的字段
          },
        },
        acceptId: {
          type: DataTypes.INTEGER,
          allowNull: false,
          references: {
            model: "Users", // 关联的表名
            key: "id", // 关联的字段
          },
        },
        isRead: {
          type: DataTypes.STRING(10),
          allowNull: false,
          defaultValue: "no", // 默认值为 "no"，表示未读
        },
        isSystem: {
          type: DataTypes.STRING(10),
          allowNull: false,
          defaultValue: "no", // 默认值为 "no"，表示非系统消息
        },
        createdAt: {
          type: DataTypes.DATE,
          allowNull: false,
        },
      },
      {
        sequelize,
        modelName: "Message",
        tableName: "messages",
        timestamps: false, // 禁用 sequelize 默认的 createdAt 和 updatedAt 字段
      }
    );
  }

  static associate(models) {
    // 定义关联关系
    // Message 属于一个发送者（Users）
    this.belongsTo(models.Users, {
      foreignKey: "sendId",
      as: "sender",
    });

    // Message 属于一个接收者（Users）
    this.belongsTo(models.Users, {
      foreignKey: "acceptId",
      as: "receiver",
    });
  }
}

module.exports = Message
